package edu.hawaii.duedates;

import java.util.List;

/**
 * This interface is implemented by all user library info collections. It defines accessor, 
 * mutator, request, validity, and toString behaviors.
 * 
 * @author Ronn Reeves and Robin E. Raqueno
 */
public interface IUserLibraryInfo {

  /**
   * Sets the collection of books for this user library info request.
   * 
   * @param  books  The collection of books.
   */
  public void setBooks(List<Book> books);
  /**
   * Returns the collection of books for this user library info request.
   *
   * @return List&lt;Book&gt;  The collection of books.
   */
  public List<Book> getBooks();

  
  /**
   * Sets this library from which the info is being requested.
   * 
   * @param  library  The library from which to request the data.
   */
  public void setLibrary(Library library);
  /**
   * Returns this library object.
   *
   * @return Library  The library providing the info.
   */
  public Library getLibrary();
  

  /**
   * Sets this user for which the info is being requested.
   * 
   * @param  user  The user requesting the info.
   */
  public void setUser(User user);
  /**
   * Returns this user object.
   *
   * @return User  The user requesting the info.
   */
  public User getUser();


  /**
   * Sets the validity of this user library info request.
   * 
   * @param  validity  The validity status of this request.
   */
  public void setValid(Boolean validity);
  /**
   * Returns the validity of this user library info request.  Returns true if the request is 
   * successful; false, otherwise.
   *
   * @return Boolean  The validity of the user library info request.
   */
  public Boolean isValid();
  

  /**
   * Requests the info from this library for this user.
   */
  public void requestInfo();

  
  /**
   * Returns the library name and user id of this User Library Info request.
   * 
   * @return String  The library name and user id.
   */
  public String toString();
}